insert into   asm_estrattore_perla_0 
select codice_bolletta,contratto_estratto codice_contratto,

CASE WHEN TO_CHAR(DATA_INIZIO_PERIODO,'DD') > '15' THEN   TO_DATE(CONCAT('01',TO_CHAR(ADD_MONTHS(DATA_INIZIO_PERIODO,1),'MMYYYY')),'DDMMYYYY') 
 ELSE   TO_DATE(CONCAT('01',TO_CHAR(DATA_INIZIO_PERIODO,'MMYYYY') ),'DDMMYYYY')   END

data_inizio_periodo,

CASE WHEN 

CASE WHEN TO_CHAR(DATA_FINE_PERIODO-1,'DD') >= '15' THEN LAST_DAY(DATA_FINE_PERIODO-1) 
ELSE TO_DATE(CONCAT('01',TO_CHAR(DATA_FINE_PERIODO-1,'MMYYYY') ),'DDMMYYYY')  END

<=

CASE WHEN TO_CHAR(DATA_INIZIO_PERIODO,'DD') > '15' THEN   TO_DATE(CONCAT('01',TO_CHAR(ADD_MONTHS(DATA_INIZIO_PERIODO,1),'MMYYYY')),'DDMMYYYY') 
 ELSE   TO_DATE(CONCAT('01',TO_CHAR(DATA_INIZIO_PERIODO,'MMYYYY') ),'DDMMYYYY') END
 
 THEN
 
 LAST_DAY(
 
 CASE WHEN TO_CHAR(DATA_INIZIO_PERIODO,'DD') > '15' THEN   TO_DATE(CONCAT('01',TO_CHAR(ADD_MONTHS(DATA_INIZIO_PERIODO,1),'MMYYYY')),'DDMMYYYY') 
 ELSE   TO_DATE(CONCAT('01',TO_CHAR(DATA_INIZIO_PERIODO,'MMYYYY') ),'DDMMYYYY') END
 )
 
 ELSE 
 
CASE WHEN TO_CHAR(DATA_FINE_PERIODO-1,'DD') >= '15' THEN LAST_DAY(DATA_FINE_PERIODO-1) 
ELSE TO_DATE(CONCAT('01',TO_CHAR(DATA_FINE_PERIODO-1,'MMYYYY') ),'DDMMYYYY')  END
END
data_fine_periodo,
SUM(quantita_scaglione) qunatita,
--sum(quantita_scaglione) quantita ,
0 gg
from --(select distinct progressivo_voce,codice_utente,contratto_estratto,codice_bolletta,
 --quantita_scaglione,
 --data_inizio_periodo,
--Data_fine_periodo,

--progressivo_tariffazione,progressivo_periodo,progressivo_scaglione,codice_classe_addebito from ut_asm.tmpmark@asmdw
ut_asm.tmpmark_riep@asmdw
where progressivo_voce = '010'
 and codice_classe_addebito in ('CONG','ACCO','ADDE')
 --AND codice_ruolo_fatturato = ^RUOLO xx;N;Numerico^^
 --AND ANNO_ESERCIZIO = ^Anno ESERCIZIO AAAA ;N;Numerico^^
 AND MESE_BOLLETTAZIONE = ^Mese Bollettazione xx;N;Numerico^^
 AND ANNO_bollettazione = ^Anno bollettazione AAAA ;N;Numerico^^
 
 --)--where codice_bolletta = 10031178
group by 
progressivo_voce,codice_bolletta,contratto_estratto ,

CASE WHEN TO_CHAR(DATA_INIZIO_PERIODO,'DD') > '15' THEN   TO_DATE(CONCAT('01',TO_CHAR(ADD_MONTHS(DATA_INIZIO_PERIODO,1),'MMYYYY')),'DDMMYYYY') 
 ELSE   TO_DATE(CONCAT('01',TO_CHAR(DATA_INIZIO_PERIODO,'MMYYYY') ),'DDMMYYYY')   END

,

CASE WHEN 

CASE WHEN TO_CHAR(DATA_FINE_PERIODO-1,'DD') >= '15' THEN LAST_DAY(DATA_FINE_PERIODO-1) 
ELSE TO_DATE(CONCAT('01',TO_CHAR(DATA_FINE_PERIODO-1,'MMYYYY') ),'DDMMYYYY')  END

<=

CASE WHEN TO_CHAR(DATA_INIZIO_PERIODO,'DD') > '15' THEN   TO_DATE(CONCAT('01',TO_CHAR(ADD_MONTHS(DATA_INIZIO_PERIODO,1),'MMYYYY')),'DDMMYYYY') 
 ELSE   TO_DATE(CONCAT('01',TO_CHAR(DATA_INIZIO_PERIODO,'MMYYYY') ),'DDMMYYYY') END
 
 THEN
 
 LAST_DAY(
 
 CASE WHEN TO_CHAR(DATA_INIZIO_PERIODO,'DD') > '15' THEN   TO_DATE(CONCAT('01',TO_CHAR(ADD_MONTHS(DATA_INIZIO_PERIODO,1),'MMYYYY')),'DDMMYYYY') 
 ELSE   TO_DATE(CONCAT('01',TO_CHAR(DATA_INIZIO_PERIODO,'MMYYYY') ),'DDMMYYYY') END
 )
 
 ELSE 
 
CASE WHEN TO_CHAR(DATA_FINE_PERIODO-1,'DD') >= '15' THEN LAST_DAY(DATA_FINE_PERIODO-1) 
ELSE TO_DATE(CONCAT('01',TO_CHAR(DATA_FINE_PERIODO-1,'MMYYYY') ),'DDMMYYYY')  END
END
order by codice_bolletta
